<!DOCTYPE html>
<html lang="zh-cn">
  <head>
    <meta charset="UTF-8">
    <title>Sucha's Homepage - Simple Journal</title>
    <meta name="generator" content="MarkdownProjectCompositor.lua">
    <meta name="author" content="Sucha">
    <meta name="keywords" content="suchang, programming, Linux, Lua">
    <meta name="description" content="Sucha's homepage and blog">
    <link rel="shortcut icon" href="../images/ico.png">
    <link rel="stylesheet" type="text/css" href="../styles/site.css">
    <link rel="stylesheet" type="text/css" href="../styles/prism.min.css">
    <style id="site_theme"></style>
  </head>
  <body>
    <div id="body">
      <div id="text">
	<!-- Page published by cmark-gfm begins here --><h1>Sucha's Homepage ~ Simple Journal</h1>
<h2>Simple journal</h2>
<p>最近更新: 2005-11-13</p>
<p><strong>本页目录</strong></p>
<dl class="contents"><dt class="contents"><a href="#sec-1">简要介绍</a></dt><dt class="contents"><a href="#sec-2">使用方法</a></dt><dt class="contents"><a href="#sec-3">它是如何工作的?</a></dt><dt class="contents"><a href="#sec-4">不能工作？</a></dt></dl>
<p><a id="sec-1"></a></p>
<h3>简要介绍</h3>
<p>这是一个方便写日记的简单函数，随时记录，按月分类文件，每条记录包含题目，时间和星期。但是由于没有搜索代码，所以不利于回头搜索。函数的目的只是实现简单的记录。
<a id="sec-2"></a></p>
<h3>使用方法</h3>
<p>在 emacs 里加东西很简单的，要么把它作为一个 .el 文件 load 进去，或者就直接把它写到你的&quot;~/.emacs&quot;文件中。</p>
<p>下面这几个函数很短，直接把它复制到你的&quot;~/.emacs&quot;里就行了。或者把它们写在另外一个 .el 文件中，在&quot;~/.emacs&quot;里用&quot;(load &quot;~/path/file.el&quot;)&quot; load 进来就行了。</p>
<p><a id="sec-3"></a></p>
<h3>它是如何工作的?</h3>
<p>下面是一个增加日记条目的函数。如果是这个月第一次写日记，函数会在&quot;~/path/to/your/journal/dir/&quot;文件夹下根据当月时间建立名为&quot;yyyy-mm&quot;这样按年月分类的文件，并在文件头上写&quot;# user's journal created yyyy-mm-dd&quot;这段文字，接着插入当前的日期、时间和标题。</p>
<p>如果文件已经存在，则只插入日期、时间和标题。</p>
<pre><code class="language-lisp">(defun sucha-simple-journal-add-entries  (heading)
  &quot;Open the local diary file and add entries today.&quot;

  ;;; if you need backup, remove the ';' beginning of the line
  ;(shell-command &quot;tar -czpf backup_filename.tgz ~/path-to/files-dir/;
  ;  mv backup_filename.tgz ~/path-to/backup-dir/&quot;)

  (find-file (format &quot;~/path/to/your/journal/dir/%s&quot; 
		     (format-time-string &quot;%Y-%m&quot;)))

  (goto-char (point-min))
  (unless (re-search-forward &quot;^# &quot; nil t)
    (insert &quot;# user's journal created &quot;
	    (format-time-string &quot;%Y-%m-%d\n&quot;) &quot;\n&quot;))

  (forward-line 1)
  (insert &quot;\n\n\n\n&quot;)
  (forward-line -3)
  (insert (concat 
	   &quot;&lt;&quot;
	   (format-time-string &quot;%e&quot;)&quot;号, 周&quot;
	   (format-time-string &quot;%a &quot;)
	   (format-time-string &quot;%H:%M&quot;)
	   &quot;&gt;  &quot;
	   heading
	   &quot;\n    &quot;))
  (text-mode))
</code></pre>
<p>下面是一个从 mini-buffer 读取用户日记标题的函数，并将读取到的函数传递到上面的函数中。如果你不想要标题，留空就行了。</p>
<pre><code class="language-lisp">(defun sucha-simple-journal-add-heading ()
  &quot;Get the local journal heading from minibuffer.&quot;
  (interactive)
  (sucha-simple-journal-add-entries
   (read-from-minibuffer &quot;Journal Heading: &quot;)))
</code></pre>
<p>我希望随时使用它，所以最好把它绑定到一个按键上。比如下面的f11。</p>
<pre><code class="language-lisp">(global-set-key [(f11)] 'sucha-simple-journal-add-heading)
</code></pre>
<p><a id="sec-4"></a></p>
<h3>不能工作？</h3>
<p>有什么问题，你可以随便修改上面的代码，或者联系我吧 <a class="nonexistent" href="mailto:suchaaa@gmail.com">EmailMe</a>，同时欢迎任何意见或建议。</p>
<!-- Page published by cmark-gfm ends here -->
      <div id="foot">
	2004-<script>var d = new
	Date();document.write(d.getFullYear())</script> &copy;
	Sucha. Powered by MarkdownProjectCompositor.
      </div><!-- foot -->
      </div><!-- text -->
      <div id="sidebar">
      </div><!-- sidebar -->
      <script src="../js/prism.min.js" async="async"></script>
      <script src="../js/site_sidebar.js"></script>
    </div><!-- body -->
  </body>
</html>